// 进入页面：
// 判断是否存在token
//     存在：
//         判断是否是登录页面
//             是：跳转到主页
//             否：向下执行
//     不存在：
//         判断是否在白名单中（白名单：不需要登录可以直接访问的页面：login，404）
//             是：向下执行
//             否：跳转到登录页面

// 访问权限的拦截
import router from '@/router'
import store from '@/store'
import { Message } from 'element-ui'

// 定义白名单
const WHITE_LIST = ['/login', '/404']

// 添加导航守卫
router.beforeEach(async (to, from, next) => {
  // 得到token：去vuex模块中获取
  const token = store.getters.token
  //   console.log(token);
  // 判断token是否存在
  if (token) {
    // 判断是否存在用户信息
    // 得到用户信息
    const userInfo = store.getters.userInfo
    // 判断是否存在
    if(!userInfo.username){
      // 如果不存在，调用接口得到数据
      await store.dispatch('user/getUserInfo')
    }
    if (to.path === '/login') {
      Message({
        message: '您已经登录了，请不要调皮',
        type: 'info'
      })
      next('/')
    } else {
      next()
    }
  } else {
    //   token不存在，判断是否在白名单中
    if (WHITE_LIST.indexOf(to.path) !== -1) {
      next()
    } else {
      Message({
        message: '对不起，您还没有登录',
        type: 'warning'
      })
      //   跳转到登录页面：记录之前访问的页面的路径：
      next(`/login?_redirect=${to.path}`)
    }
  }
})
// 后置守卫
router.afterEach(function () {
})
